package com.xiaohujr.xuexue.leetcode.niuke;

/**
 * 给定一个有序数组，请算出平方后的结果可能的个数。

 nums = {-1,1,1,1},

 那么你应该返回的是：1。因为这个数组所有数的平方取值都是1，只有一种取值

 nums = {-1,0,1,2,3}

 你应该返回4，因为nums数组所有元素的平方值一共4种取值：1,0,4,9



 两个同符号数的绝对值相等，这也意味着在有序数组中这个两个数是相邻的，这时只需要移动指针跳过相邻相等的数即可。

 两个异符号数的绝对值相等，所以我们需要维护两个指针，一个指针从前往后移动，一个从后往前移。原因是前面的负数绝对值可能与后面整数的绝对值相等，我们需要比较前后两个指针绝对值的大小。
 https://interview.nowcoder.com/interview/1489106/interviewee?code=DB47oAtH
 */
public class SortedSet {

    public static int getCount(int[] arr){

        if(arr==null || arr.length==0){
            return 0;
        }
        int temp = arr[0];
        int count = 1;
        if(temp>0){
            for(int i=1;i<arr.length;i++){
                if(temp!=arr[i]){
                    count++;
                }
            }
            return count;
        }
        int i=0,j=arr.length-1;
        while(i<j){

            if(arr[i]*arr[i]>arr[j]*arr[j]){
                count++;
                i++;
            }else if(arr[i]*arr[i]<arr[j]*arr[j]){
                count++;
                j--;
            }else{
                i++;
                j--;
            }

        }
        return count;
    }
    public static void main(String[] args) {
        System.out.println(getCount(new int[]{-9,-1,0,1,1}));
        System.out.println("Hello World!");
    }
}
